{
 "cells": [
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:11:34.476364Z",
     "start_time": "2024-09-19T01:11:34.018922Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from datetime import date\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import roc_auc_score"
   ],
   "id": "2a4e366bad780a6b",
   "outputs": [],
   "execution_count": 23
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:11:39.811193Z",
     "start_time": "2024-09-19T01:11:39.169317Z"
    }
   },
   "cell_type": "code",
   "source": [
    "off_train_data = pd.read_csv('F:\\Demopython\\o2o\\O2O优惠券使用新人赛\\ccf_offline_stage1_train.csv',encoding='utf-8')\n",
    "off_test_data = pd.read_csv('F:\\Demopython\\o2o\\O2O优惠券使用新人赛\\ccf_offline_stage1_test_revised.csv',encoding='utf-8')"
   ],
   "id": "7e1fdf3a384b242",
   "outputs": [],
   "execution_count": 24
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:11:48.700683Z",
     "start_time": "2024-09-19T01:11:48.362904Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 填充缺失值\n",
    "off_train_data = off_train_data.fillna('null')\n",
    "off_test_data = off_test_data.fillna('null')"
   ],
   "id": "58ee7d883d4e0541",
   "outputs": [],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:11:54.290905Z",
     "start_time": "2024-09-19T01:11:54.287064Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 用label列标记分类，label的取值为1表示正样本，0表示负样本，-1表示普通用户\n",
    "def label(row):\n",
    "    if row['Date'] != 'null' and row['Date_received'] != 'null':\n",
    "        if row['Coupon_id'] != 'null':\n",
    "            # 优惠券id不为空，表示使用了优惠券购买\n",
    "            # 计算使用优惠券的日期差值\n",
    "            td = pd.to_datetime(row['Date'], format='%Y%m%d') - \\\n",
    "                 pd.to_datetime(row['Date_received'], format='%Y%m%d')\n",
    "            if td <= pd.Timedelta(15, 'D'):  # 判断使用优惠券是否在15天内\n",
    "                return 1\n",
    "            else:\n",
    "                return 0\n",
    "        else:\n",
    "            # 其他情况：优惠券id为null，表示没有使用优惠券购买\n",
    "            return 0\n",
    "    if row['Date'] == 'null' and row['Date_received'] != 'null':\n",
    "        return 0\n",
    "    else:\n",
    "        return -1"
   ],
   "id": "df510c156a053847",
   "outputs": [],
   "execution_count": 26
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:12:17.554920Z",
     "start_time": "2024-09-19T01:12:01.147205Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#对lable分类\n",
    "off_train_data['label'] = off_train_data.apply(label, axis = 1)\n",
    "off_train_data['label'].value_counts()"
   ],
   "id": "446679395e46bce4",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "label\n",
       " 0    988887\n",
       "-1    701602\n",
       " 1     64395\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 27
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:12:19.978643Z",
     "start_time": "2024-09-19T01:12:19.755188Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X = off_train_data.loc[:,off_train_data.columns != 'label']  # 数据\n",
    "y = off_train_data.loc[:,off_train_data.columns == 'label']  # 标签\n",
    "\n",
    "# 获取类1标签的长度\n",
    "count_one_Class = len(off_train_data[off_train_data['label'] == 1])\n",
    "\n",
    "# 获取两类标签的索引\n",
    "one_Class_index = off_train_data[off_train_data['label'] == 1].index\n",
    "zero_Class_index = off_train_data[off_train_data['label'] == 0].index\n",
    "\n",
    "# 随机选择相同数目的索引\n",
    "np.random.seed(25)  # 定义随机种子\n",
    "random_zero_index = np.array(np.random.choice(zero_Class_index,count_one_Class,replace=True))\n",
    "\n",
    "# 合并模型样本索引\n",
    "sample = np.concatenate([one_Class_index,random_zero_index])\n",
    "\n",
    "# 按照索引获取行\n",
    "off_train_data = off_train_data.loc[sample,:]\n",
    "# 打印结果对比\n",
    "print('label为1的数目：', len(one_Class_index))\n",
    "print('label为0的数目：', len(zero_Class_index))\n",
    "print('总数：', len(one_Class_index) + len(zero_Class_index))\n",
    "print('抽样label为1的数目：', len(one_Class_index))\n",
    "print('随机抽取label为0的数目：', len(random_zero_index))\n",
    "print('抽样总数：', len(one_Class_index) + len(random_zero_index))\n",
    "print('总样本形状：', off_train_data.shape)"
   ],
   "id": "2ca2285dcdd16e2a",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "label为1的数目： 64395\n",
      "label为0的数目： 988887\n",
      "总数： 1053282\n",
      "抽样label为1的数目： 64395\n",
      "随机抽取label为0的数目： 64395\n",
      "抽样总数： 128790\n",
      "总样本形状： (128790, 8)\n"
     ]
    }
   ],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:12:28.255998Z",
     "start_time": "2024-09-19T01:12:28.253162Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 探索性分析\n",
    "print(off_test_data.columns)"
   ],
   "id": "f4d9aa9fec0f53e4",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['User_id', 'Merchant_id', 'Coupon_id', 'Discount_rate', 'Distance',\n",
      "       'Date_received'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:12:33.263759Z",
     "start_time": "2024-09-19T01:12:33.199770Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 变换距离的类型，缺失值替换为-1\n",
    "off_train_data['Distance'] = off_train_data['Distance'].replace('null', -1).astype(int)\n",
    "off_test_data['Distance'] = off_test_data['Distance'].replace('null', -1).astype(int)\n",
    "print('查看缺失值结果：\\n',off_train_data.isnull().sum())"
   ],
   "id": "da093de5c9857d32",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "查看缺失值结果：\n",
      " User_id          0\n",
      "Merchant_id      0\n",
      "Coupon_id        0\n",
      "Discount_rate    0\n",
      "Distance         0\n",
      "Date_received    0\n",
      "Date             0\n",
      "label            0\n",
      "dtype: int64\n"
     ]
    }
   ],
   "execution_count": 30
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:12:39.305965Z",
     "start_time": "2024-09-19T01:12:39.288397Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 描述性统计分析\n",
    "description = off_train_data.describe()"
   ],
   "id": "8dc2148232e61970",
   "outputs": [],
   "execution_count": 31
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:12:46.161482Z",
     "start_time": "2024-09-19T01:12:46.154149Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 依次计算极差值、系数、四分位数间距\n",
    "description.loc['range'] = description.loc['max'] - description.loc['min']\n",
    "description.loc['var'] = description.loc['std'] - description.loc['mean']\n",
    "description.loc['dis'] = description.loc['75%'] - description.loc['25%']\n",
    "print('描述性统计结果：\\n',np.round(description, 2))  # 保留两位小数\n"
   ],
   "id": "41f4d267bcd09432",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "描述性统计结果：\n",
      "           User_id  Merchant_id   Distance     label\n",
      "count   128790.00    128790.00  128790.00  128790.0\n",
      "mean   3697459.80      4077.69       1.85       0.5\n",
      "std    2123423.03      2471.02       3.36       0.5\n",
      "min        110.00         3.00      -1.00       0.0\n",
      "25%    1859343.75      1941.00       0.00       0.0\n",
      "50%    3698645.00      3621.00       0.00       0.5\n",
      "75%    5543521.50      6434.00       2.00       1.0\n",
      "max    7360941.00      8856.00      10.00       1.0\n",
      "range  7360831.00      8853.00      11.00       1.0\n",
      "var   -1574036.77     -1606.67       1.51       0.0\n",
      "dis    3684177.75      4493.00       2.00       1.0\n"
     ]
    }
   ],
   "execution_count": 32
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:15:14.368889Z",
     "start_time": "2024-09-19T01:15:14.220274Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 检查所有其他列，确保它们都是数值类型\n",
    "for col in off_train_data.columns:\n",
    "    off_train_data[col] = pd.to_numeric(off_train_data[col], errors='coerce').fillna(-1)"
   ],
   "id": "feb4e832c14248d4",
   "outputs": [],
   "execution_count": 35
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:15:14.965476Z",
     "start_time": "2024-09-19T01:15:14.944783Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 相关性分析\n",
    "corr = off_train_data.corr(method = 'pearson')  # 计算相关系数矩阵"
   ],
   "id": "9f8b10342245abc2",
   "outputs": [],
   "execution_count": 36
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:15:15.611764Z",
     "start_time": "2024-09-19T01:15:15.606663Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 处理 'Distance' 列，确保它是数值类型\n",
    "off_train_data['Distance'] = pd.to_numeric(off_train_data['Distance'], errors='coerce').fillna(-1)"
   ],
   "id": "bfb465dafe142285",
   "outputs": [],
   "execution_count": 37
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:15:30.521997Z",
     "start_time": "2024-09-19T01:15:30.515100Z"
    }
   },
   "cell_type": "code",
   "source": "print('相关系数矩阵为：\\n', np.round(corr, 2))",
   "id": "31eda68e3941c15d",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "相关系数矩阵为：\n",
      "                User_id  Merchant_id  Coupon_id  Discount_rate  Distance  \\\n",
      "User_id           1.00         0.00       0.00           0.01     -0.00   \n",
      "Merchant_id       0.00         1.00       0.03           0.03     -0.01   \n",
      "Coupon_id         0.00         0.03       1.00           0.03      0.03   \n",
      "Discount_rate     0.01         0.03       0.03           1.00     -0.03   \n",
      "Distance         -0.00        -0.01       0.03          -0.03      1.00   \n",
      "Date_received     0.00        -0.05      -0.10          -0.04     -0.21   \n",
      "Date              0.00         0.07       0.03           0.07     -0.33   \n",
      "label             0.00         0.07       0.03           0.07     -0.33   \n",
      "\n",
      "               Date_received  Date  label  \n",
      "User_id                 0.00  0.00   0.00  \n",
      "Merchant_id            -0.05  0.07   0.07  \n",
      "Coupon_id              -0.10  0.03   0.03  \n",
      "Discount_rate          -0.04  0.07   0.07  \n",
      "Distance               -0.21 -0.33  -0.33  \n",
      "Date_received           1.00  0.22   0.22  \n",
      "Date                    0.22  1.00   0.99  \n",
      "label                   0.22  0.99   1.00  \n"
     ]
    }
   ],
   "execution_count": 38
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:15:36.494642Z",
     "start_time": "2024-09-19T01:15:35.923871Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 绘制相关性热力图\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "plt.rcParams['font.sans-serif'] = 'SimHei'\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "plt.subplots(figsize=(10, 10))  # 设置画面大小\n",
    "sns.heatmap(corr, annot=True, vmax=1, square=True, cmap=\"Blues\")\n",
    "plt.title('相关性热力图')\n",
    "plt.show()"
   ],
   "id": "5011bd8de2a41541",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwgAAAMaCAYAAAAiG2GHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD3m0lEQVR4nOzdd1gUVxcG8HdZOigKKIKAiEix914SE02xd6PB3kvsscRu7MYuNjSKXaOoqChWbGjsLaiIIKIIivS2tO8PcATp6+wu6/f+nmefODM7s2dO7gx7du7ckaSnp6eDiIiIiIgIgIaqAyAiIiIiouKDBQIREREREQlYIBARERERkYAFAhERERERCVggEBERERGRgAUCEREREREJWCAQEREREZGABQIREREREQlYIBARERERkYAFAhERERERCVggEBERERGpWEREBFq1aoXg4OBCvf/ff//FTz/9hIYNG+Lvv/8WNRYWCEREREREKvThwwcMHz4cr1+/LvT7R4wYgbZt22L//v3w8PDA9evXRYuHBQIRERERkchkMhliY2OzvWQyWa7vnTBhAn7++edCb/vYsWMoU6YMRo0aBRsbG4wcORL//POPWKFDU7QtEREREREpmV7t0aoOIVdLBzpg3bp12eaNHj0aY8aMyfHe+fPnw8rKCgsXLizUtp8+fYpGjRpBIpEAAGrUqIEVK1Z8edCZWCAQEREREYls2LBhGDBgQLZ52traub7XysqqSNuOjY1FpUqVhGlDQ0OEhoYWPcg8sEAgIiIiIhKZtrZ2ngXBl5JKpdm2raOjg8TERNG2zwKBiIiIiNSX5P/vllojIyN8+PBBmI6Li4OWlpZo2///yygRERERkRqrXr067t+/L0z7+vrCzMxMtO2zQCAiIiIiKoZiY2ORnJycY36rVq1w+/ZtXL9+HSkpKdi2bRuaNWsm2ueyQCAiIiIi9SWRFM+XCDp06ABvb+8c842NjTFlyhQMHjwYzZo1g5+fH0aMGCHKZwKAJD09PV20rRERERERKZFe3bGqDiFXCbdXK/wzXr58CX9/fzRo0ACGhoaibZc3KRMRERERqaEKFSqgQoUKom+XBQIRERERqa//w1GMFI0ZJSIiIiIiAQsEIiIiIiISsIsREREREakvkUYMok94BYGIiIiIiAQsEIiIiIiISMAuRkRERESkvjiKkeiYUSIi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rgQAJCUlwdjYGNeuXYOhoaH4ERIRERERkdIUukAYOXJknssSEhJgbGyM1atXo3bt2qIERkREREREyifXFYTPpaSkYO3atZg/fz4OHz4sSmBERERERAViDyPRyTXM6ec0NTXRu3dvBAQEiLE5IiIiIiJSEVEKBAC4cOECzM3NxdocERERERGpQKG7GHXq1CnPu8Sjo6Px4cMHjmJERERERErFUYzEV+gCoV+/fnkuK1myJGrVqgUTExNRgiIiIiIiItUodIHQuXNnRcZBRERERETFgFwPSiMiIiIiKg7YxUh8ot2kTERERERE6o8FAhERERERCdjFiIiIiIjUFrsYiY9XEIiIiIiISMACgYiIiIiIBOxiRERERETqiz2MRMcrCEREREREJGCBQEREREREAnYxIiIiIiK1xVGMxMcrCEREREREJGCBQEREREREApV3Mbpw8E9Vh6B2vu0+Q9UhqCXPffNUHYLa0eBVW7loS/nbS1HpaklVHYJaCo1NVHUIRCrHLkbi418xIiIiIiISsEAgIiIiIiKByrsYERERERHJi12MxFfoAqFVq1aF+h9w7ty5LwqIiIiIiIhUp9AFwuLFi4V/X758GZ6enhg0aBCsrKzw5s0bbN26FS1btlRIkEREREREpByFLhAaNGgg/HvSpEnYunUrKleuLMyrXbs2hg0bhunTp4sbIRERERFRHtjFSHxy3aQskUgQHBycbd6bN2+QkpIiSlBERERERKQact2kPHr0aIwdOxZNmzaFubk5wsLCcOXKFUydOlXs+IiIiIiISInkKhC6d++O6tWr4+zZs3j37h3s7e0xYsQIVK1aVez4iIiIiIjyxh5GopN7mFNHR0c4OjqKGQsREREREakYH5RGREREREQCPiiNiIiIiNQWRzESX6ELhO+++w7Hjh2DgYFBvg9N44PSiIiIiIjUV6ELhEWLFkFPTw9A9oemERERERHR10OuB6Vl/TcRERERkaqwi5H4eJMyEREREREJFFIgjB07Fh8+fFDEpomIiIiISIEUMorRtWvXkJiYqIhNExEREREJ2MVIfOxiREREREREAhYIREREREQk4IPSiIiIiEh9sYeR6BRyBYF9wYiIiIiI1JNCCoT09HRFbJaIiIiIiBRMIV2Mjh07BjMzM0VsmoiIiIhIwJ4r4pPrCsKWLVuQnJycbZ6Pjw+cnZ0B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iIiIiIiogKg9xSgtLQ39+/fP8Y5uqampSE9P11pgREREREQqcY6R1qmdIMyePVuXcRARERERUSGgdoLQuXNnXcZBRERERESFgEY3SiMiIiIiKgxEnGOkdWpfpExEREREREUfEwQiIiIiIhJwihERERER6S0RZxhpHUcQiIiIiIhIwASBiIiIiIgEnGJERERERHqLM4y0jyMIREREREQkYIJAREREREQCTjEiIiIiIv3FOUZaxxEEIiIiIiISMEEgIiIiIiIBpxgRERERkd4ScY6R1nEEgYiIiIiIBEwQiIiIiIhIwClGRERERKS3RJxhpHUcQSAiIiIiIgETBCIiIiIiEnCKERERERHpLc4w0j6OIBARERERkYAJAhERERERCTjFiIiIiIj0F+cYaR0TBCIiIn0llhR0BPonPa2gIyAq9DjFiIiIiIiIBBxBICIiIiK9JeIcI63jCAIREREREQmYIBARERERkYBTjIiIiIhIb4k4w0jrOIJAREREREQCJghERERERCTgFCMiIiIi0lucYaR9HEEgIiIiIiIBEwQiIiIiIhJwihERERER6S/OMdI6jiAQEREREZGACQIREREREQk4xYiIiIiI9JaIc4y0jiMIREREREQkYIJAREREREQCTjEiIiIiIr0l4gwjreMIAhERERERCZggEBERERGRgFOMiIiIiEhvcYaR9nEEgYiIiIiIBEwQiIiIiIhIwClGRERERKS/OMdI6ziCQEREREREAiYIREREREQk4BQjIiIiItJbIs4x0jqOIBARERERkYAJAhERERERCXI9xahly5YQiVQP5Zw4cUKjgIiIiIiI1KXG11LKpVwnCHPmzNFFHEREREREVAjkOkGoV6+eLuIgIiIiIqJCgKsYEREREZHe4gwj7dPaRcpyuRwZGRlIT0/X1iGJiEjHIiMjcPPGdchk0lyVEZF22Vqb48H+6Shb0ragQyHK2wiCVCrF3LlzceLECcTGxsLX1xeDBg3C8uXLUaNGDW3FqLbQoKdYvWgWIsJC0axtB/T8fqTKC6of3rmO9Uvm4m18DNr36I//de6tVtmpQ37w27IK0vhYVHOrjSFjpsHG1h4ZGRk4uGczTh/xh0z6FvWbeqHn9yNhbGKqs/PWprAXz7B1yR+IehWKhl7t0aHfcJVt+OTeDexc/hek8bFo3bUvWnToleU56+dP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cIoREREREektEdcx0jqOIBARERERkYAJAhERERERCTjFiIiIiIj0Flcx0j6OIBARERERkYAJAhERERERCZggEBERERGRgAkCEREREREJmCAQEREREZGAqxgRERERkd7iKkbaxxEEIiIiIiISMEEgIiIiIiIBpxgRERERkd4SgXOMtI0jCEREREREJGCCQEREREREAk4xIiIiIiK9xVWMtI8jCEREREREJGCCQEREREREAk4xIiIiIiK9xRlG2scRBCIiIiIiEjBBICIiIiIiAacYEREREZH+4hwjreMIAhERERERCZggEBERERGRgFOMiIiIiEhviTjHSOs4gkBERERERAImCEREREREJOAUIyIiIiLSWyLOMNI6jiAQEREREZGACQIREREREQk4xYiIiIiI9BZnGGkfRxCIiIiIiEjABIGIiIiIiAScYkRERERE+otzjLSOIwhERERERCRggkBERERERAJOMSIiIiIivSXiHCOt4wgCEREREREJmCAQEREREZGAU4yIiIiISG+JOMNI6ziCQEREREREAiYIREREREQkEGVkZGQUdBBERERERFQ4cASBiIiIiIgETBCIiIiIiEjABIGIiIiIiARMEIiIiIiISMAEgYiIiIiIBEwQiIiIiIhIwASBiIiIiIgETBCIiIiIiEjABIGIiIiIiAT/B2BjeF9siuHpAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 39
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:15:43.187924Z",
     "start_time": "2024-09-19T01:15:43.081976Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 箱型图\n",
    "off_train_data['Distance'].isnull().sum()\n",
    "off_test_data['Distance'].isnull().sum()\n",
    "D1 = np.array(off_train_data['Distance'].values)\n",
    "D2 = np.array(off_test_data['Distance'].values)\n",
    "plt.boxplot([D1,D2],labels=('off_train_data','off_test_data'))\n",
    "plt.title('距离箱型图')\n",
    "plt.show()"
   ],
   "id": "7d0d8c811479439d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhsAAAGxCAYAAADLSHSoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAApjklEQVR4nO3deXxU9b3/8fckM2HLAiQQLrKJQliUJYLklgcVCIrah3IrFK5K7+WhRRTt41pcAEFAqVYQKciOUIVLJUUa4CJWUOSWoqBGrVEREiJcDASygNmQTJbz+4NfRobszPkmmcnr+U+Ys3zmM5z5nrxzlhmHZVmWAAAADAlq6AYAAEBgI2wAAACjCBsAAMAowgYAADCKsAEAAIwibAAAAKMIGwAAwCjCBgAAMIqwAQAAjCJsAE2U2+1WUVFRlfMvXLigtWvX6uuvv651zdLSUr311ls6e/ZshXnnzp3TBx98oIsXL15Vv1f65ptvtHLlSltqATDL2dANAPBdWlqa7rzzToWEhEiSLMtSRESEPvzwQ91www0qLi6udL1x48bp97//vdxut5o1a+Y1r0WLFtq2bZvS0tK0YMECr3mlpaVyu91q3ry5HA6HZ/rmzZs1f/58zZ07V2PGjJFlWSouLlabNm306quvaseOHdqxY4e6dOlSoZejR49qz549CgkJ8aopXQpGI0aMUI8ePVRcXKxWrVrp+PHjSkhI0NSpUz3LxcfHKz09vU7/dw888ICmT59ep3UA1A1hAwgALpdLkvTVV19Jkj7++GPPL9CQkBC99tprio2N9VqnPICcPn1av/jFL+RyueRyuSr8oj9w4ICGDh3qeVxWVqbi4mKVlJRo165duuaaayRJycnJWrRokVq2bKnnn39eCxYsUFlZmcLCwrRu3Tq99dZbCgoK0r333ivpUiAqKirSwYMHFRISovz8fB0+fFinT59Wdna2br75Zp0/f14HDx7U6NGjFRsbq//+7//W7t27tWXLFoWEhHjCVTmn06mZM2d6nkOSEhISNHDgQMXExFT4f5s8eXKFGgDsR9gAAoDTWXEol08LCgqSy+WqcOSi/HFoaKj++c9/eqb/8MMPWr16tQYPHqyhQ4cqJCREW7du1ZtvvqnZs2dr0KBBFZ7r4MGDevzxxxUbG6vVq1dr4sSJGjp0qP7rv/5LmZmZGj9+vOLi4rR48WJt2rRJe/fu1bp161RcXOwJSoMGDdKgQYO0bt06ffLJJ/rjH/+opKQkHTx4UK+++qqkS0dwysNBUFBQhWAUHBwsp9PpeW1paWlauHChJk2a5BU2ypcLCgpSUBBnkwHTGGVAACgpKZEkJSUlKSkpSSkpKSorK6tTjWeeeUaLFy9WUVGRevbsqXfffVc///nPNXr0aL3yyiuaMWOGBg0apOTkZN19992e9SzL0j/+8Q/9/Oc/17Jly7R//37FxcUpODhYknTs2DH16dNHixcvVkREhO6++2716tVLISEhio6OrhAYiouLqzza4HA4Kix/uctDV2lpqebMmaOSkhKtW7dO/fr1U79+/dS/f38lJyd7liNsAOZxZAMIAC6XS8OHD9drr72mQ4cOqXfv3l5HIO6///4K69xxxx1asmSJ57Hb7VZZWZkyMzN1+PBhJScna9iwYRoyZIh27typJ598Uvfdd5/i4uL0/fffe9ZzOBx6+umnJV0KHo899pjWrFmjW265RZL06quv6vjx47rtttu8nn/v3r1KSEjQtddeq4yMDL388styuVxKSUlRbm6uZs2apZycHEnSjBkz1KZNG88pm6pcHkQWLVqkpKQk3X333Xr55ZdVXFys+++/X/369atwSgmAWYQNIAD8y7/8i9asWSNJGjlypJ588kmvsPHGG294/YKdN2+eSktLvWpYlqXz5897ruV4/vnn1aZNG0nSgAED9OmnnyokJESnTp2SZVmV9uFwOOR0Or2OMBQVFWn69Om65557PNPOnDmjW265xbOc0+lUdHS0XC6XPv/8c0VHR6tDhw6eozPR0dEKDw9XSUmJ5yhOdZKSkpSQkKA1a9bopZde0vTp0/Xjjz8qNDSUi0GBBkDYAAJAUVGRLl68qIiIiErnX3nNRlBQUIXA0L17d33++edasWKFJGnt2rU6ceKEunXrVqHe4MGDvR6vWLFCu3fvltPpVElJiZ577jm5XC499dRT1Z72KJ/Xrl07TZ8+XadPn9bGjRs1ffp0jRo1SklJSUpMTNTjjz8uh8OhtWvXem7XLSsrq7L2oEGDtGfPHkVGRur48eN66aWX5HQ69corr3hO7wCoP4QNIACUX8C5a9cuSdL69euVmJioYcOG1brGo48+6vX4iy++0MSJE7Vo0SINHDiw2nXj4+PVp08f7du3T998843GjRunmJgY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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 40
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:15:51.323538Z",
     "start_time": "2024-09-19T01:15:51.319461Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义函数处理折扣率\n",
    "def convertRate(row):\n",
    "    if row == 'null':\n",
    "        return 1.0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return 1.0 - float(rows[1]) / float(rows[0])\n",
    "    else:\n",
    "        return float(row)\n"
   ],
   "id": "a41665fc9f315f23",
   "outputs": [],
   "execution_count": 41
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:15:55.926952Z",
     "start_time": "2024-09-19T01:15:55.922951Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def getDiscountType(row):\n",
    "    # 如果 row 是浮点数，直接返回一个默认值或根据你的逻辑返回一个值\n",
    "    if isinstance(row, float):\n",
    "        return -1  # 或者其他表示非折扣类型的值\n",
    "    # 如果 row 是字符串，继续进行判断\n",
    "    elif ':' in row:\n",
    "        # 满多少减多少\n",
    "        return 1\n",
    "    else:\n",
    "        # 折扣率\n",
    "        return 0"
   ],
   "id": "cf78f2a3d2630ada",
   "outputs": [],
   "execution_count": 42
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:01.567427Z",
     "start_time": "2024-09-19T01:16:01.563402Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义函数处理满减类型的折扣优惠券\n",
    "def Man_Rate(row):\n",
    "    if row == -1:\n",
    "        return 0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return int(rows[0])\n",
    "    else:\n",
    "        return 0\n",
    "def Jian_Rate(row):\n",
    "    if row == -1:\n",
    "        return 0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return int(rows[1])\n",
    "    else:\n",
    "        return 0"
   ],
   "id": "2a947b4b2a996163",
   "outputs": [],
   "execution_count": 43
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:06.578090Z",
     "start_time": "2024-09-19T01:16:06.301860Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 调用函数构建跟折扣率相关的四个特征属性\n",
    "off_train_data['Dis_rate'] = off_train_data['Discount_rate'].apply(convertRate)\n",
    "off_train_data['Discount_type'] = off_train_data['Discount_rate'].apply(getDiscountType)\n",
    "off_train_data['Discount_man'] = off_train_data['Discount_rate'].apply(Man_Rate)\n",
    "off_train_data['Discount_jian'] = off_train_data['Discount_rate'].apply(Jian_Rate)\n",
    "off_test_data['Dis_rate'] = off_test_data['Discount_rate'].apply(convertRate)\n",
    "off_test_data['Discount_type'] = off_test_data['Discount_rate'].apply(getDiscountType)\n",
    "off_test_data['Discount_man'] = off_test_data['Discount_rate'].apply(Man_Rate)\n",
    "off_test_data['Discount_jian'] = off_test_data['Discount_rate'].apply(Jian_Rate)"
   ],
   "id": "8184b1a65ff55277",
   "outputs": [],
   "execution_count": 44
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:11.222328Z",
     "start_time": "2024-09-19T01:16:11.200926Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 根据label标签来提取正、负样本的全部数据\n",
    "data = off_train_data[off_train_data['label'] != -1]\n",
    "data = data.fillna(-1)\n",
    "data['label'].value_counts()"
   ],
   "id": "530674c65f231331",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "label\n",
       "1    64395\n",
       "0    64395\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 45
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:32.834552Z",
     "start_time": "2024-09-19T01:16:32.554728Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 获取领券日期是星期几，并且构建成特征\n",
    "def getWeekday(row):\n",
    "    if row == 'null':\n",
    "        return row\n",
    "    else:\n",
    "        return date(int(row[0:4]),int(row[4:6]),int(row[6:8])).weekday()+1\n",
    " \n",
    "data['Weekday'] = data['Date_received'].astype(str).apply(getWeekday)\n",
    "off_test_data['Weekday'] = off_test_data['Date_received'].astype(str).apply(getWeekday)\n",
    "# 周六日为类型1，其他为0\n",
    "data['Is_weekend'] = data['Weekday'].apply(lambda x: 1 if x in [6,7] else 0)\n",
    "off_test_data['Is_weekend'] = off_test_data['Weekday'].apply(lambda x: 1 if x in [6,7] else 0)"
   ],
   "id": "d944dcd3d2140ba9",
   "outputs": [],
   "execution_count": 46
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:37.566844Z",
     "start_time": "2024-09-19T01:16:37.553582Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 跟星期相关的独热编码\n",
    "def One_hot(df):\n",
    "    weekdaycols = ['weekday' + str(i) for i in range(1,8)]\n",
    "    tmpdf = pd.get_dummies(df['Weekday'].replace('null', np.nan))\n",
    "    tmpdf.columns = weekdaycols\n",
    "    df[weekdaycols] = tmpdf\n",
    "    return df\n",
    "data = One_hot(data)\n",
    "off_test_data = One_hot(off_test_data)"
   ],
   "id": "284dd925a8ef0e7b",
   "outputs": [],
   "execution_count": 47
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:43.719248Z",
     "start_time": "2024-09-19T01:16:43.508383Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import pandas as pd\n",
    "\n",
    "def func(data):\n",
    "    # 提取用户使用的优惠券的数量\n",
    "    f = data[['User_id', 'Coupon_id']].copy()  # 创建一个副本以避免警告\n",
    "    f['rec_coupon'] = 1\n",
    "    f = f.groupby(['User_id']).agg('sum').reset_index()\n",
    "    \n",
    "    # 全部优惠券的数目\n",
    "    f1 = data[['Coupon_id']].copy()  # 创建一个副本以避免警告\n",
    "    l1 = len(f1)\n",
    "    f1['Number_coupon'] = 1\n",
    "    f1 = f1.groupby(['Coupon_id']).agg('sum').reset_index()\n",
    "    # 优惠券的流行度：每一种优惠券占全部优惠券的比例\n",
    "    f1['Coupon_popu'] = f1['Number_coupon'] / l1\n",
    "    \n",
    "    # 提取用户和商家\n",
    "    f2 = data[['User_id','Merchant_id']].copy()  # 创建一个副本以避免警告\n",
    "    l2 = len(f2)\n",
    "    # 提取顾客去商家的数量\n",
    "    f2['Number_merchant'] = 1\n",
    "    f2 = f2.groupby(['Merchant_id']).agg('sum').reset_index()\n",
    "    # 商家的受欢迎度：商家的顾客（用户）占全部商家的顾客（用户）的比例\n",
    "    f2['Merchant_popu'] = f2['Number_merchant'] / l2\n",
    "    \n",
    "    # 合并特征属性\n",
    "    d0 = pd.merge(data, f[['User_id', 'rec_coupon']], on='User_id')\n",
    "    d1 = pd.merge(d0, f1[['Coupon_id', 'Coupon_popu']], on='Coupon_id')\n",
    "    d2 = pd.merge(d1, f2[['Merchant_id', 'Merchant_popu']], on='Merchant_id')\n",
    "    \n",
    "    return d2\n",
    "\n",
    "# 调用以上函数构建相关的三个特征属性\n",
    "new_data = func(data)\n",
    "new_test_data = func(off_test_data)"
   ],
   "id": "a17cd931c490d945",
   "outputs": [],
   "execution_count": 48
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:48.272286Z",
     "start_time": "2024-09-19T01:16:48.168061Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 定义函数得到跟距离相关的特征属性\n",
    "def Get_mer_dis(new_data):\n",
    "    # 查看距离的类别数量\n",
    "    new_data['Distance'].value_counts()\n",
    "    # 提取用户-商家距离的数据集\n",
    "    md1 = new_data[new_data.Coupon_id != 'null'][['Merchant_id', 'Distance']]\n",
    "    md1.replace('null', -1, inplace=True)\n",
    "    md1.replace(-1, np.nan, inplace=True)\n",
    "    # 用户-商家的距离最小值\n",
    "    md2 = md1.groupby('Merchant_id').agg('min').reset_index()\n",
    "    md2.rename(columns={'Distance': 'merchant_min_distance'}, inplace=True)\n",
    "    # 用户-商家的距离最大值\n",
    "    md3 = md1.groupby('Merchant_id').agg('max').reset_index()\n",
    "    md3.rename(columns={'Distance': 'merchant_max_distance'}, inplace=True)\n",
    "    # 用户-商品的距离平均值\n",
    "    md4 = md1.groupby('Merchant_id').agg('mean').reset_index()\n",
    "    md4.rename(columns={'Distance': 'merchant_mean_distance'}, inplace=True)\n",
    "    # 用户-离商品的距离中位值\n",
    "    md5 = md1.groupby('Merchant_id').agg('median').reset_index()\n",
    "    md5.rename(columns={'Distance': 'merchant_median_distance'}, inplace=True)\n",
    "    # 将所有特征合并在一起\n",
    "    merchant_feature = pd.merge(md2, md3, on='Merchant_id', how='left')\n",
    "    merchant_feature = pd.merge(merchant_feature, md4, on='Merchant_id', how='left')\n",
    "    merchant_feature = pd.merge(merchant_feature, md5, on='Merchant_id', how='left')\n",
    "    new_data = pd.merge(new_data,merchant_feature,on='Merchant_id',how='left')\n",
    "    return new_data\n",
    "# 调用上边函数构建距离相关的特征属性\n",
    "new_data = Get_mer_dis(new_data)\n",
    "new_test_data = Get_mer_dis(new_test_data)\n"
   ],
   "id": "512e977a46b1519a",
   "outputs": [],
   "execution_count": 49
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:53.612580Z",
     "start_time": "2024-09-19T01:16:53.465274Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 距离柱状图\n",
    "x = np.arange(-1,11)\n",
    "dis1 = np.array(new_data['Distance'].value_counts().sort_index())\n",
    "dis2 = np.array(new_test_data['Distance'].value_counts().sort_index())\n",
    "plt.bar(x,dis1,tick_label=x, label='off_train_data', width=0.3)\n",
    "plt.bar(x+0.3,dis2,label='off_test_data',width=0.3)\n",
    "plt.xlabel('距离')\n",
    "plt.ylabel('计数')\n",
    "plt.title('距离计数分布情况')\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "id": "22aa7332efaacd84",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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qFWrVvr3v/+tRYsW6ZZbbqny76GoqEhff/217rvvPknSwIED9cUXX6hhw4aaO3eu97WYNGmSrrvuOv3Xf/2XpLI5V5988onPIcjRo0d7/+x2u6tcp6Ral17gXEQRAiysZcuW3kNRQ4YM0SOPPOJThBYvXuxzaGfy5MkVPlwNw1Bubq73UM3UqVMVFRUlqWx+zeeff67Q0FAdOHDAZ5K0JI0bN04Oh0MlJSUKCwvTpk2blJCQUOm3puLj431ub9iwQa1atdI///lPPfPMM7r//vt14MABHTt2TEePHtV9992ngQMHqrS0VIZhKDw83LunpHz+TLnVq1frhRde0F133aWoqCgdOnSo0r0p48aNU2hoqF555RX9+9//Vmpqqrp16+Ydz87O1oMPPqgbbrjBuweoujlOkrRt2zY1btxYF198sSSpY8eOWrx4sd544w2dOnXKO0fo4Ycf9q7HMAy53W6fQ3in83g8crvdKigoqDBmGAZFCBBFCLC0oqIiFRYWKjIystLx0+cI2e32CmXm4osv1tatW/X3v/9dUtlk4x9//FEXXXRRhec7vcx8/vnnkqRVq1bpxRdflCRt3LhRoaGh3rlKixYt0saNG7VkyRKf3I0bN9aRI0f01ltvafr06erdu7cWLFigzp0769Zbb9WKFSs0f/58RUREaNeuXUpISNCRI0cUGxvrU4IyMjI0adIk3XzzzXK5XJUewvq1xMREzZ8/Xy+++KLatm3rvT8vL0/33nuvDh48qOXLl/vM/ZFU4dDc008/rTFjxkiSHA6HEhMTfcpXaGiohg8froEDB1aZZd68eRo0aFCF+w8fPqzY2FgVFxfryy+/rHKeUlVf0weshCIEWFj5ZObyc90sWrRIq1at0oABA2r8HH/60598bm/btk233367Zs+erR49etT4ecoP/5TvTSrndDpls9l8Cln5n5s3b6558+YpJCRE77zzjpYtW6Z169bJ6XSqX79+2rBhgy6//HL961//kiT9+OOPateunc/zd+jQQcuXL1fnzp1VUFCg5ORkbdu2Tffee6/ee+89NW/e3Ltsv3791Lp1aw0cONCnoBw+fFj33HOPTpw4oS5duqhz5866//77JUnvvPOO3nzzTZ/TCdxwww0+e4ni4+MVHx9f4av2oaGhcrvd2rBhg1q3bu0z1rt370r3NLlcLo0aNUoTJ07U1KlTNXXqVA0cOFCPPvqorrnmGsXFxVWYHwVYGUUIsLCwsDCfgpGVlaWjR4+qU6dOksr2cvz6BH6FhYU+3zSaMGFChRMGejweGYZR6fwiqez8RKfvLfFXfn5+hb1Mffv29f55w4YNstlsmj17tnJzc7V169ZKy1n5V+UbN24sqex1iIiI8Nnjk5+fr1OnTqlly5Y+jz1w4IDGjBmjhg0basmSJZoxY4bCw8PVokULSVJkZKQcDof3tvTLN/KqY7ef+VRvlX3rb968ebLZbBoyZIikstMdHDt2zPvtMgC+KEIAvJ566invnoK5c+d692r82h/+8Afvn51Op2677TZNmjRJUtk3uKZOnap169YpOjpahmHonXfe0bXXXiup7BBYdSc2/Nvf/qb//u//rrBnqDJNmjTRli1bdODAAd1+++1as2aNmjdvrgULFujjjz/27kXp1q2bFi1apI8//lhjx46t9nk3bNjgnZBc7ueff5akCkWoVatWevTRR/X73/9esbGx1T53bZQfKrv66qsrzFmq7LBWZmamXn31VU2dOtU7d2jHjh0qLS3VpZdeWqfZgHMFRQhAlao7hPLrPRa7du3Sk08+qccee8x7UsSsrCxNmjRJbrdbI0eOrHZ9qampWr58uQYNGlSjImSz2RQVFaWnnnpKzZo102effaZOnTpp6dKleuaZZ7zL/c///I8eeOABXXrppWc8r48kbd68WZ9++qleeukln/sPHz4sST57dsr9ettOn0NVmdpOUn7vvfcqPTT2a4Zh6KmnnlKnTp00atQo7/1paWnq0aOHYmJiKjxv+ekTKtuzBFgF734Akso+SD/99FN99tlnFebR1MS9994rj8ejH374QRMmTNDhw4d16NAhlZaWKjU11XuopjKFhYXav3+/Vq1apcWLF6tr1661WvekSZP06aef6uOPP9akSZNks9n05ZdfqnPnzmrevLl3cnRYWJhOnTqlsLCwSp/niy++0EMPPaTBgwdXOBP1jz/+qIiIiEpPTvhrZ5qAvHr1an399dfKzs6ucAbtM7nyyisr3Hf6t/deffVVffnll3rzzTe9e49WrVql9957Ty+//HKlz/vDDz/of/7nf/S///u/3sODgNVQhACLysrK0tq1a/XDDz+od+/estvt+uqrr9SpUye1bt1abrdbhw4dqnDBUsMwvIdafr33Iy4u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766wsDBJUlxcnDIzMyWpXsZqy2bzf5v9WU+g1lfXzModzK8b2fwTrNmCNZdENn+RzT/BnE2qea6AF6HMzEy1b99eTzzxhKKiovTMM8/oySefVLt27dS6dWvvcjabTXa7XXl5eXK5XHU+FhkZWavczZo1+Q1bXXuBXl9diIoKNztCUL9uZPNPsGYL1lwS2fxFNv8Ec7aaCHgRGjFihEaMGOG9/Ze//EUJCQm6+OKLFRoa6rNsgwYNVFhYKIfDUedjtS1COTn5CsQ8a5ut7E0VqPVVxuGw+1VqcnML5HZ76iFR9YLhdasK2fwTrNmCNZdENn+RzT/BnE36JV91Al6EThcRESGPx6OYmBjt2bPHZ6ygoEAhISGKjIys87HaMgwF9C860OurK2ZnDubXjWz+CdZswZpLIpu/yOafYM5WEwGfLP3Xv/5V7777rvf2zp07ZbfbFRcXpx07dnjvz8rKUnFxsSIjI9W1a9c6HwMAAAh4EerYsaPmzp2rzz//XJs3b9a0adM0atQo9evXT/n5+UpPT5ckzZ8/X3379pXD4VB8fHydjwEAAAT80NjIkSOVmZmp+++/X+Hh4UpISFBSUpKcTqemTZum5ORkzZw5U263W2lpaWUh62EMAADAlDlCycnJSk5OrnB/QkKC1q9fr507d6pnz56Kjo6u1zEAAGBtpk+WPl1sbKxiY2MDNgYAAKyLi64CAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLoggBAADLcpodAOcOh6PmvdrjMeTxGPWYBgCA6lGE8Jud17iB5HErIiKsxo8x3KU6dryQMgQAMBVFCL9ZRJhTsjuklX+UsjOqf0BMB9muXyi73UYRAgCYiiKEupOdIR3aYXYKAABqjMnSAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAskwvQnfffbdWrVolScrIyND111+v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8ODBPr9ng/mzoabYIxSEkpKSNGzYMLNjeBUXFysxMVGdO3fWypUrlZmZGTT/mpOC7/Uql5mZqYcffljDhg1TTEyMbrnlFn399ddmx5JUdmb1xx9/XB06dJAkXXrppcrLyzM51S+OHz+u1NRUtW3b1uwoXqWlpcrIyFCvXr0UERGhiIgINW7c2OxYXoZh6Mknn9Sdd96pNm3amB3HKzQ01Pt6RUREKD09XVdeeaUuuOACs6Pp22+/Vffu3dW5c2edf/75Gj16tPbu3Wt2LElle6rGjBmjfv36qVWrVnr00Uf15ZdfKjc315Q8x44dU2Jiog4cOOC9L9g/G2qKIhSEpk2bpjvvvNPsGF4bN26Uy+VSSkqK2rRpo6SkJK1YscLsWF7B9nqVGzx4sG655Rbv7b179+rCCy80MdEvWrZsqREjRkiSSkpK9PLLL+vKK680OdUvUlNTlZCQoMsuu8zsKF67d++WYRgaOXKkunXrprvvvlsHDx40O5bX8uXLtWvXLrVu3VofffSRSkpKzI5UQVFRkV599VXdc889ZkeRJLVr105btmzRt99+q/z8fC1dulT9+vUzO5akssP9559/vve2/f8uze50Ok3JU9k/OIP9s6GmKEImuf/++9WrV68KP2lpaUHxL6Vf27Vrl7p3766wsDBJUlxcXFDNdQm216syxcXFevnll3XrrbeaHcXHrl271K9fP33yySd6/PHHzY4jSdqyZYs2b96sCRMmmB3FR2Zmptq3b69nn31Wa9euVUhIiJ588kmzY0kq28M3d+5cXXjhhfr555/1yiuv6Pbbb1dRUZHZ0XysWbNG3bt3V+vWrc2OIqmsCF111VUaNWqUevXqpR07dmjixIlmx5IkdezYURs2bJDxf2e4WbVqlbp166YmTZqYkqeyf3AG+2dDTZlTLaGpU6eqsLCwwv1NmzYNfJhquFwun19cNptNdrtdeXl5XK+thubOnatGjRrpxhtvNDuKj7i4OC1evFipqalKSUnR3//+d1PzFBUV6amnntLkyZOD6rCTJI0YMcK7F02S/vKXvyghIUEul8v0rB988IFOnTqlJUuWqGnTprr33nt17bXXKj09XTfddJOp2X5t2bJl+vOf/2x2DK/t27fro48+0ltvvaVLLrlE8+fP17hx47RixQrZbDZTs911111KTEzU6NGj1aBBA23btk2pqamm5ansH5znymcDRcgkMTExZkeoMYfDodDQUJ/7GjRooMLCwrPqzW6WTz75RMuWLdPy5csVEhJidhwfNptNnTp10owZMzR48GDTf4HNmzdPXbp00aBBg0zLUFMRERHyeDw6cuSI6UXo559/Vrdu3bz/kHI6nYqLiwuqb0Dt27dPP/30k/r27Wt2FK93331Xw4cPV7du3SRJDz30kJYtW6Zdu3apY8eOpmZr2rSpli1bpn379mnRokXKy8vTtddea2qm050rnw0cGkO1IiMjK3xts6CgIOg+1IPR/v379cgjj2jy5Mlq166d2XG8Nm/e7POvy/ILEJfPQzDLmjVr9K9//ct7qPidd97RlClTNHnyZFNzSdJf//pXvfvuu97bO3fulN1uV8uWLU1MVaZFixYVDoMdPHjQZ46J2datW6dBgwYF1e8Nt9ut7Oxs7+2CggKdPHlSbrfbxFS+mjdvrg8++EDJyclBd6Hwc+WzgT1CqFbXrl19JsBlZWWpuLj4rGr8ZigsLNS9996rhIQEDR06VAUFBZKkRo0amb7b/eKLL9af/vQnXXTRRRo4cKDmzp2rfv36mTb/oNzSpUtVWlrqvT1z5kx1795do0aNMjFVmY4dO2ru3Lk677zzVFpaqmnTpmnUqFHe+RFmGjRokJ5++mm98cYbGjx4sNavX6/vvvtOc+bMMTua18cff6zRo0ebHcNHz5499fjjj2vx4sVq1qyZ3nrrLcXExCguLs7saF6vvfaaLr74YiUkJJgdpYJz5bOBIoRqxcfHKz8/X+np6Ro5cqTmz5+vvn37Bt2/ToLNpk2blJmZqczMTC1fvtx7/4YNG0yfLBobG6vnn39ef/3rX5Wamqr+/ftr1qxZpmaSyvZs/FqjRo0UFRUVFBdJHjlypDIzM3X//fcrPDxcCQkJSkpKMjuWpLLDKAsXLtSMGTM0Y8YMxcTE6LnnnjP9fVausLBQO3bs0NSpU82O4mPYsGHau3evlixZoqNHj6p9+/Z64YUXgmaPxokTJ7Ro0SItWLDA7CiVOlc+G7joKmrkww8/VHJyssLDw+V2u5WWlqb27dubHQsAEEBxcXE+/5g7Fz4bKEKoscOHD2vnzp3q2bNnUPwLHQBgvrP9s4EiBAAALItvjQEAAMuiCAEAAMuiCAEAAMuiCAGwJMMwVFxcXOlYaWmpvvjii6C8cCmAusVkaQDnlIULF2rRokVq1qyZ9+RuycnJGjdunM477zyfZYuLi7Vu3To1bNjQ59wxxcXFGjJkiCZPnuxzIju32y23213hsgIAzl4UIQDnlCVLlujYsWN6+OGHlZGRoaeeekqPPvqo5syZo9dee63C8ocPH9a4cePkdDrldFY8x2xxcbFCQ0NlGIZKS0vVsWNHTZ8+PRCbAiAAOLM0gHPK6WXG6XSe8ZImsbGx+uc//6l//etfio+P16xZs1RQUKBBgwapuLhYCxcu1NixYzVkyBDt3btX3bt3r+9NABBAzBECcE4pKSnRwYMH9dlnn2nnzp3yeDw1etyUKVNUUFCgCRMm6KKLLtKUKVM0a9YsXXzxxeratav27t2radOm1XN6AIFGEQJwTmnXrp3CwsI0ffp0paen6/LLL5ckbd++XUOGDPH+dOnSRRs3bvQ+zuFwqKSkRElJSTIMQ++//742btyoAQMGaNasWSoqKpLdzq9M4FzDHCEA55SioiI5HA49++yzat++vUaPHq3t27fr2Wef9ZkjdOONNyopKUl9+vSRJPXv31+NGzeudJ5Q+fM2btxYq1evDsh2AAgM5ggBOKekpKSob9++kqR//OMfeu2113TNNddU+7hNmzZ5/3zw4EGNGzdOb7zxhiIiIuotKwDzUYQAnFNCQ0O9X4W/7777NGrUKG3fvl1z5sxR7969vcu5XC7veYSefPJJbd261TuWl5en/Px83XrrrRWe/7//+79100031fNWAAgUihCAc5rNZpPNZlPPnj0r/fq8JB09elSPPvqoBg4cqA0bNujFF1/U+vXrFRYWpvT0dLVt21bdu3fXvHnzlJOTE+AtAFCfKEIAzll79+7V66+/roYNG55xufKv13/44Yd68MEHdf/992vlypXKycnRp59+qv379ys9PT0AiQEEGkUIwDkjKytLe/fu1TfffKODBw8qOjpa3bp1U//+/at8jGEY3q/Yt2jRQkOHDpVhGIqKilKXLl10880369NPP9WJEyfkcrmYMwScYyhCAM4ZLpdL0dHRuuOOO9SnTx81a9ZMkvT555/rm2++8ZkjJEknT57U7NmzVVRUJEnq0qWL/va3v1V43lGjRmnYsGE6ceKEZs+eXf8bAiBg+Po8ANSAx+PhPELAOYgiBAAALIt/3gAAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMv6/3rew9gbaPmkAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 50
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:16:59.502826Z",
     "start_time": "2024-09-19T01:16:59.452128Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义变换距离类型的函数\n",
    "def get_distance_type(row):\n",
    "    # 距离未知\n",
    "    if row == -1:\n",
    "        return -1\n",
    "    # 1千米内\n",
    "    elif row >= 0 and row <= 2:\n",
    "        return 0\n",
    "    # 1.5-2.5千米内\n",
    "    elif row >= 3 and row <= 5:\n",
    "        return 1\n",
    "    # 3-4.5千米内\n",
    "    elif row >= 6 and row <= 9:\n",
    "        return 2\n",
    "    # 5千米\n",
    "    elif row == 10:\n",
    "        return 3\n",
    "    # 构建距离类型的特征属性\n",
    "new_data['Distance_type'] = new_data['Distance'].apply(get_distance_type)\n",
    "new_test_data['Distance_type'] = new_test_data['Distance'].apply(get_distance_type)"
   ],
   "id": "5f78eada5d4d57a",
   "outputs": [],
   "execution_count": 51
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:17:10.509115Z",
     "start_time": "2024-09-19T01:17:10.502075Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 新距离类型分布情况\n",
    "new_data['Distance_type'].value_counts()\n",
    "new_test_data['Distance_type'].value_counts()"
   ],
   "id": "92628f9b5a2b7c7f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Distance_type\n",
       " 0    71864\n",
       " 1    12917\n",
       "-1    12064\n",
       " 3    10353\n",
       " 2     6442\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 52
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:17:21.239599Z",
     "start_time": "2024-09-19T01:17:21.130278Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 距离柱状图\n",
    "x1 = np.arange(-1,4)\n",
    "dis_type1 = np.array(new_data['Distance_type'].value_counts().sort_index())\n",
    "dis_type2 = np.array(new_test_data['Distance_type'].value_counts().sort_index())\n",
    "plt.bar(x1,dis_type1,tick_label=x1, label='off_train_data', width=0.3)\n",
    "plt.bar(x1+0.3,dis_type2,label='off_test_data',width=0.3)\n",
    "plt.xlabel('距离类型')\n",
    "plt.ylabel('计数')\n",
    "plt.title('距离类型计数分布情况')\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "id": "fba505fc3504da5b",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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giT8a0ilEgYhkWMQIiIiAGVBSC6T4oPNx3H+psZu6+3tXw+TnmldFoKup9ptvUQAgxAREf3N+ZsanLp2x27ra17vEfYiET0injVGREREosUgRERERKLFIERERESixSBEREREosUgRERERKLFIERERESixSBEREREosUgRERERKLFIERERESixSBEREREosUgRERERKLFIERERESixSBEREREosUgRERERKLFIERERESixSBEREREosUgRERERKLFIERERESiJZoglJGRgfDwcAQHByM2NhZGo9HRJREREZGDiSII6XQ6REREoF27dkhMTIRarUZSUpKjyyIiIiIHE0UQSklJgUajQXR0NJo0aYLIyEhs377d0WURERGRg8kdXYA9pKenIzAwEC4uLgAAf39/qNXqaj2HVArY4mhau4aecFHKrP/EVWhez73sP/U7AApX+6y0bgvTf6UCjd7sB2FgPwgD+0EY2A+PRiKxcD6jCAbLLFy4EMXFxZg1a5ZpWteuXfHjjz9CpVI5sDIiIiJyJIHmYOuSyWRQKpVm05ycnFBUVOSgioiIiEgIRBGEVCoVcnNzzaZptVooFAoHVURERERCIIogFBAQgNTUVNPjzMxM6HQ6HhYjIiISOVEEoeDgYBQUFCA5ORkAEB8fj27dukEms98gNCIiIhIeUQyWBoB9+/YhKioKbm5u0Ov1SEhIQMuWLR1dFhERETmQaIIQAGRlZSEtLQ1BQUHw9vZ2dDlERETkYKIKQkRERER/JYoxQkRERESVYRAiIiKqJfLy8nDs2LEKl4yhqjEI1WB5eXno27cvMjMzHV0KkcNwO3C8ffv2oV+/fmjbti1efPHFat/CiKxj165dGDBgAObOnYs+ffpg165dji6pRmAQqqFyc3MRERGBq1evOroUUcrIyEB4eDiCg4MRGxsLDrVzDG4Hjnf58mVMmzYNUVFRSElJQcOGDTF9+nRHlyU6d+7cQUxMDL755hskJydjzpw5WLJkiaPLqhEYhGqoyMhIhIaGOroMUdLpdIiIiEC7du2QmJgItVqNpKQkR5clStwOHE+tVmPChAkIDQ2Fj48PXn75Zfzxxx+OLkt0tFotpk2bhlatWgEAWrdujfz8fAdXVTMwCNVQMTExeOONNxxdhiilpKRAo9EgOjoaTZo0QWRkJLZv3+7oskSJ24Hj9enTBy+/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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 53
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:17:28.500751Z",
     "start_time": "2024-09-19T01:17:28.447957Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 跟距离相关的独热编码\n",
    "def Get_dis_hot(df):\n",
    "    discols = ['Distance' + str(i) for i in range(-1,11)]\n",
    "    tmpdf = pd.get_dummies(df['Distance'].replace('null', np.nan))\n",
    "    tmpdf.columns = discols\n",
    "    df[discols] = tmpdf\n",
    "    return df\n",
    "new_data = Get_dis_hot(new_data)\n",
    "new_test_data = Get_dis_hot(new_test_data)\n",
    "# 集成新的数据集后，对缺失值处理\n",
    "new_data = new_data.fillna(-1)\n",
    "new_test_data = new_test_data.fillna(-1)\n",
    "new_data.isnull().sum()\n",
    "new_test_data.isnull().sum()"
   ],
   "id": "a328666ed299f39f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "User_id                     0\n",
       "Merchant_id                 0\n",
       "Coupon_id                   0\n",
       "Discount_rate               0\n",
       "Distance                    0\n",
       "Date_received               0\n",
       "Dis_rate                    0\n",
       "Discount_type               0\n",
       "Discount_man                0\n",
       "Discount_jian               0\n",
       "Weekday                     0\n",
       "Is_weekend                  0\n",
       "weekday1                    0\n",
       "weekday2                    0\n",
       "weekday3                    0\n",
       "weekday4                    0\n",
       "weekday5                    0\n",
       "weekday6                    0\n",
       "weekday7                    0\n",
       "rec_coupon                  0\n",
       "Coupon_popu                 0\n",
       "Merchant_popu               0\n",
       "merchant_min_distance       0\n",
       "merchant_max_distance       0\n",
       "merchant_mean_distance      0\n",
       "merchant_median_distance    0\n",
       "Distance_type               0\n",
       "Distance-1                  0\n",
       "Distance0                   0\n",
       "Distance1                   0\n",
       "Distance2                   0\n",
       "Distance3                   0\n",
       "Distance4                   0\n",
       "Distance5                   0\n",
       "Distance6                   0\n",
       "Distance7                   0\n",
       "Distance8                   0\n",
       "Distance9                   0\n",
       "Distance10                  0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 54
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:28:00.477123Z",
     "start_time": "2024-09-19T01:28:00.472013Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 查看属性特征\n",
    "new_data.columns\n",
    "new_test_data.columns"
   ],
   "id": "aa8095a4dd8816e8",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['User_id', 'Merchant_id', 'Coupon_id', 'Discount_rate', 'Distance',\n",
       "       'Date_received', 'Dis_rate', 'Discount_type', 'Discount_man',\n",
       "       'Discount_jian', 'Weekday', 'Is_weekend', 'weekday1', 'weekday2',\n",
       "       'weekday3', 'weekday4', 'weekday5', 'weekday6', 'weekday7',\n",
       "       'rec_coupon', 'Coupon_popu', 'Merchant_popu', 'merchant_min_distance',\n",
       "       'merchant_max_distance', 'merchant_mean_distance',\n",
       "       'merchant_median_distance', 'Distance_type', 'Distance-1', 'Distance0',\n",
       "       'Distance1', 'Distance2', 'Distance3', 'Distance4', 'Distance5',\n",
       "       'Distance6', 'Distance7', 'Distance8', 'Distance9', 'Distance10'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 55
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:28:06.898346Z",
     "start_time": "2024-09-19T01:28:06.894336Z"
    }
   },
   "cell_type": "code",
   "source": [
    "features = ['Dis_rate','Discount_type','Discount_man', 'Discount_jian',\n",
    "            'Distance','Distance_type','Distance-1', 'Distance0',\n",
    "            'Distance1', 'Distance2', 'Distance3', 'Distance4', 'Distance5',\n",
    "            'Distance6', 'Distance7', 'Distance8', 'Distance9', 'Distance10',\n",
    "            'rec_coupon','Coupon_popu','Merchant_popu','merchant_min_distance',\n",
    "            'merchant_max_distance','merchant_mean_distance','merchant_median_distance',\n",
    "            'Is_weekend','Weekday','weekday1','weekday2','weekday3','weekday4',\n",
    "            'weekday5','weekday6','weekday7']"
   ],
   "id": "cb5c58779b91daf6",
   "outputs": [],
   "execution_count": 56
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:28:15.756032Z",
     "start_time": "2024-09-19T01:28:15.645762Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 提取指定特征属性的数据集，并且划分为训练集和验证集\n",
    "X = new_data[features]\n",
    "y = new_data['label']\n",
    "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,stratify=y)"
   ],
   "id": "aec0350b2d24c82b",
   "outputs": [],
   "execution_count": 57
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:28:20.664161Z",
     "start_time": "2024-09-19T01:28:20.660951Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 进行网格搜索调参\n",
    "from sklearn.model_selection import GridSearchCV"
   ],
   "id": "5139de8188c81480",
   "outputs": [],
   "execution_count": 58
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-19T01:30:41.090915Z",
     "start_time": "2024-09-19T01:30:40.431377Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 导入 XGBoost 库\n",
    "import xgboost as xgb\n",
    "\n",
    "# 使用 XGBoost 的 XGBClassifier 替换 GradientBoostingClassifier\n",
    "# 这里您可以根据需要调整参数\n",
    "xgb_model = xgb.XGBClassifier(\n",
    "    learning_rate=0.1,  # 学习率\n",
    "    max_depth=4,  # 树的最大深度\n",
    "    n_estimators=160  # 树的数量\n",
    ")\n",
    "\n",
    "# 使用 XGBoost 模型进行训练\n",
    "xgb_model.fit(X_train, y_train)\n",
    "\n",
    "# 使用 XGBoost 模型进行预测\n",
    "y_predict_xgb = xgb_model.predict_proba(X_test)[:, 1]\n",
    "\n",
    "# 计算 AUC 值\n",
    "y_auc_xgb = roc_auc_score(y_test, y_predict_xgb)\n",
    "\n",
    "# 输出 AUC 值\n",
    "print(f'AUC: {y_auc_xgb}')\n",
    "\n",
    "# 使用 XGBoost 模型预测测试集\n",
    "pre_test = new_test_data[features]\n",
    "result_xgb = xgb_model.predict_proba(pre_test)[:, 1]\n",
    "test_result_xgb = new_test_data[['User_id', 'Coupon_id', 'Date_received']]\n",
    "test_result_xgb['Probability'] = result_xgb\n",
    "\n",
    "# 查看描述性结果\n",
    "test_result_xgb['Probability'].describe()\n",
    "\n",
    "# 将结果保存到 CSV 文件\n",
    "test_result_xgb.to_csv('./new_sample_submission_xgb.csv', index=None, header=None)\n"
   ],
   "id": "e97dcbcbfe50f088",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.8784757873551277\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Li\\AppData\\Local\\Temp\\ipykernel_1028\\446537095.py:28: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  test_result_xgb['Probability'] = result_xgb\n"
     ]
    }
   ],
   "execution_count": 59
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "35e09407e0ad7946"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
